package com.zhx.common.common.annotation;


import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * 分布式锁注解
 */
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME) //RUNTIME：注解在运行时仍然可用，因此可以通过反射机制读取它的信息。
@Target(java.lang.annotation.ElementType.METHOD)  //该注解只能作用与方法上
public @interface RedissonLock {

    /**
     * key的默认前缀，如果key为空则使用方法名作为key
     */
    String prefix() default "";

    /**
     * 支持springEL表达式，可以将参数进行拼接
     * @return
     */
    String key();

    /**
     * 等待时间，默认快速失败
     * @return
     */
    int waitTime() default -1;

    /**
     * 时间单位，默认毫秒
     */
    TimeUnit unit() default TimeUnit.MILLISECONDS;

}
